package com.edu.d6_arrays;

import java.util.Arrays;
import java.util.Comparator;

/**
 * 学会使用比较器Com
 */
public class ArraysDemo02 {
    public static void main(String[] args) {
        int[] num={12,33,1,45,43,22,55,776,44};
        //1、使用Arrays.sort（）方法对数组进行升序处理,系统默认的
        Arrays.sort(num);
        System.out.println(Arrays.toString(num));
        //2、降序处理  自定义比较器对象，只支持引用数据类型的排序
        Integer[] num2={13,44,55,36,73,47,55,99};
        /**
         * 参数一：被降序的数组，必须是引用数据类型元素
         * 参数二：匿名内部类对象，代表了一个比较器对象
         */
        Arrays.sort(num2, new Comparator<Integer>() {
            @Override
            public int compare(Integer integer, Integer t1) {

                return -(integer-t1);
            }
        });
        System.out.println(Arrays.toString(num2));
        System.out.println("---------------------");
        //使用比较器，将对象进行排序
        Student[] students = new Student[3];
        students[0]=new Student("吴磊",12,89.9);
        students[1]=new Student("张良",22,66.4);
        students[2]=new Student("元素",55,100);
        Arrays.sort(students, new Comparator<Student>() {
            @Override
            public int compare(Student student, Student t1) {
                return -(student.getAge()-t1.getAge());
            }
        });
        System.out.println(Arrays.toString(students));
        Arrays.sort(students, new Comparator<Student>() {
            @Override
            public int compare(Student student, Student t1) {
                //自己指定排序规则
                //使用Double.compare()方法，可以依据double类型的数据进行排序
                return Double.compare(student.getHeight(),t1.getHeight());
            }
        });
        System.out.println(Arrays.toString(students));
    }
}
